package org.dromara.iot.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.iot.domain.IotElevator;

import java.util.Date;

/**
 * 电梯管理业务对象 iot_elevator
 *
 * @author LSL
 * @date 2024-06-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = IotElevator.class, reverseConvertGenerate = false)
public class IotElevatorBo extends BaseEntity {

    /**
     * 电梯
     */
    @NotNull(message = "电梯不能为空", groups = {EditGroup.class})
    private Long elevatorId;

    /**
     * 小区ID
     */
    @NotNull(message = "小区ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long communityId;

    /**
     * 电梯名称
     */
    @NotBlank(message = "电梯名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String elevatorName;

    /**
     * 编码
     */
    @NotBlank(message = "编码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String numberCode;

    /**
     * 注册码
     */
    @NotBlank(message = "注册码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String registeredCode;

    /**
     * 识别码
     */
    @NotBlank(message = "识别码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String identifyCode;

    /**
     * 电梯品牌
     */
    @NotBlank(message = "电梯品牌不能为空", groups = {AddGroup.class, EditGroup.class})
    private String elevatorBrand;

    /**
     * 层数
     */
    private String layerNum;

    /**
     * 站数
     */
    private String standingNum;

    /**
     * 安装日期
     */
    @NotNull(message = "安装日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date installationDate;

    /**
     * 年检日期
     */
    private Date annualDate;

    /**
     * 下次年检日期
     */
    @NotNull(message = "下次年检日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date nextAnnualDate;

    /**
     * 使用单位
     */
    private String useUnit;

    /**
     * 电梯管理员
     */
    private String elevatorAdministrator;

    /**
     * 维保单位
     */
    private String maintenanceUnit;

    /**
     * 维保工程师
     */
    private String maintenanceEngineer;

    /**
     * 联网状态(0:联网;1:未联网)
     */
    private String networkStatus;

    /**
     * 入网日期
     */
    private Date networkDate;

    /**
     * 电梯状态(0:正常;1:故障;2:离线;3:困人)
     */
    private String elevatorStatus;

    /**
     * 检修(0:开;1:关)
     */
    private String checkFix;

    /**
     * 单元ID
     */
    @NotNull(message = "单元ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long unitId;

    /**
     * 楼ID
     */
    @NotNull(message = "楼ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long floorId;

    /**
     * 经度
     */
    private String longitude;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 使用地点
     */
    private String usePlace;

    /**
     * 建筑类型(0:住宅;1:商业;2:学校;3:医院;4:政府机关;5:重要场所;6:工厂;7:其他)
     */
    private String buildType;

    /**
     * 电梯类型(0:直梯;1:扶梯)
     */
    private String elevatorType;

    /**
     * 直梯类型(0:液压电梯;1:曳引电梯;2:杂物电梯;)
     */
    private String straightElevatorType;

    /**
     * 扶梯类型(0:自动扶梯)
     */
    private String escalatorType;

    /**
     * 厂商
     */
    private String vendor;

    /**
     * 生产日期
     */
    @NotNull(message = "生产日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date productionDate;

    /**
     * 使用类型
     */
    private String useType;

    /**
     * 额定载重(kg)
     */
    @NotBlank(message = "额定载重(kg)不能为空", groups = {AddGroup.class, EditGroup.class})
    private String ratedLoad;

    /**
     * 缓冲器类型
     */
    private String bumperType;

    /**
     * 型号
     */
    @NotBlank(message = "型号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String modelNumber;

    /**
     * 出厂编号
     */
    private String factoryCode;

    /**
     * 额定速度(m/s)
     */
    @NotBlank(message = "额定速度(m/s)不能为空", groups = {AddGroup.class, EditGroup.class})
    private String nominal;

    /**
     * 安装单位
     */
    private String installUnit;

    /**
     * 提升高度(m)
     */
    private String promoteHeight;

    /**
     * 曳引机功率(KW)
     */
    private String tractorPower;

    /**
     * 标准楼层高度(m)
     */
    private String standardFloorHeight;

    /**
     * 限速器下次年检日期
     */
    @NotNull(message = "限速器下次年检日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date speedGovernor;

    /**
     * 特种设备使用登记证编号
     */
    private String specialEquipmentCode;

    /**
     * 发证日期
     */
    private Date issueDate;

    /**
     * 特种设备使用登记证
     */
    private String specialEquipmentRegistration;

    /**
     * 电梯监督检验报告编号
     */
    private String inspectionReportNum;

    /**
     * 电梯监督检验报告
     */
    private String inspectionReport;

    /**
     * 特种设备使用标志
     */
    private String specialEquipmentUseFlag;

    /**
     * 审验编号
     */
    private String approvalNumber;

    /**
     * 审验名称
     */
    private String approvalName;

    /**
     * 审验类型
     */
    private String approvalType;

    /**
     * 审验单位
     */
    private String approvalUnit;

    /**
     * 审验时间
     */
    private Date approvalDate;

    /**
     * 申请日期
     */
    private Date applicationDate;

    /**
     * 审核状态(0:待审核;1:通过;2:不通过)
     */
    private String auditStatus;

    /**
     * 是否存在故障电梯
     */
    private String isFault;

    /**
     * 井道高度
     */
    @NotBlank(message = "井道高度不能为空", groups = {AddGroup.class, EditGroup.class})
    private String shaftHeight;

    /**
     * 当前楼层
     */
    private String curLayer;

    /**
     * 状态（0离线 1在线）
     */
    private String status;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = {AddGroup.class, EditGroup.class})
    private String remark;


}
